console.log(zpUtils,'zpUtils')//!zpUtils为webpac.config.js中output的library暴露名称
function add(a,b){
    //console.log(this)
    console.log(arguments)
    return a+b+this.c
}
let obj = {
    c:521
}
window.c = 1314


// *** call方法案例 ***/
//! 1.调用call方法 this指向obj
//! 2.当对象为null和undifine时 this指向全局window
//console.log(zpUtils.call(add,obj,10,20))
//console.log(zpUtils.call(add,null,30,50))


// *** apply方法案例 ***/
//! 1.调用apply方法 this指向obj
//! 2.当对象为null和undifine时 this指向全局window
//console.log(zpUtils.apply(add,obj,[10,20]))//apply后面传的是数组
//console.log(zpUtils.apply(add,null,[30,50]))

// *** bind方法案例 ***/
//!案例1
// let fn = zpUtils.bind(add,obj,10,20)
// console.log(fn())
//!案例2
// let fn1 = zpUtils.bind(add,obj)
// console.log(fn1(30,20))
//!案例3
// let fn2 = zpUtils.bind(add,obj,10,20)
// console.log(fn2(30,50))//依次打印的参数：  Arguments(4) [10, 20, 30, 50, callee: ƒ, Symbol(Symbol.iterator): ƒ]

// *** throttle节流案例 ***/
// window.addEventListener('scroll',zpUtils.throttle(function(e){
//     console.log(e)
// },500))

// *** debounce防抖案例 ***/
// let input = document.getElementById('inputId')
// input.onkeydown = zpUtils.debounce(function(e){
//     console.log(e.keyCode)
// },1000)

